/*
 * Nome do arquivo: RecebeDadosusuario.java
 * Autores:	Bruno Villas Bôas           - 317527
 *              Diego Zamboni               - 344990
 *              Endel Guimarães             - 379930
 * 		Guilherme Torres            - 400572
 *		Renan Oliveira              - 380113
 * 
 * Turma: 2012/1
 *
 * Descricao: Servlet responsável pelo gerenciamento de usuarios
 *
 * Data de conclusao: 
*/

package cooper.classes.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.sun.jmx.remote.internal.ArrayQueue;
import cooper.classes.bean.UsuarioBean;
import cooper.classes.dao.CooperDAOException;
import cooper.classes.dao.UsuarioDAO;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpSession;

public class RecebeDadosUsuario extends HttpServlet {
    
  @Override
  protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    HttpSession session = request.getSession();
    String acao = request.getParameter("acao");
    if(acao.equals("logout") &&
      session.getAttribute("tipoUsuario") != null){
      session.removeAttribute("tipoUsuario");
      response.sendRedirect("index.jsp");
    }
  }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException 
    {
        //String acao = request.getParameter("acao");
        String tipo = request.getParameter("tipoLogin");
        HttpSession session = request.getSession();
        if(tipo.equals("cooperativa")){
          session.setAttribute("tipoUsuario", "cooperativa");
          response.sendRedirect("indexcoop.jsp");
        }else{
          session.setAttribute("tipoUsuario", "prestador");
          response.sendRedirect("indexprest.jsp");
        }
        
        /*if (acao.compareTo("cadastrar") == 0) 
        {
            try {
                acaoCadastrar(request, response);
            } catch (CooperDAOException ex) {
                Logger.getLogger(RecebeDadosUsuario.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        else if(acao.compareTo("alterar") == 0)
        {
            try {
                acaoAlterar(request, response);
            } catch (CooperDAOException ex) {
                Logger.getLogger(RecebeDadosUsuario.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        else if(acao.compareTo("remover") == 0)
        {
            try {
                acaoRemover(request, response);
            } catch (CooperDAOException ex) {
                Logger.getLogger(RecebeDadosUsuario.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        else if(acao.compareTo("consultar") == 0) 
        {
            String nome = request.getParameter("nome");
            acaoConsultar(request, response, nome);
        }
        * */
    }
    
    private void acaoCadastrar(HttpServletRequest request, HttpServletResponse response)
                        throws ServletException, IOException, CooperDAOException 
    {
        UsuarioBean objusuario = new UsuarioBean();     
        
        objusuario.setNome(request.getParameter("nome"));
        objusuario.setSobrenome(request.getParameter("sobrenome"));
        objusuario.setTelefone(Integer.parseInt(request.getParameter("telefone")));
        objusuario.setSkype(request.getParameter("skype"));
        objusuario.setEmail(request.getParameter("email"));
        objusuario.setUsuario(request.getParameter("usuario"));
        objusuario.setSenha(request.getParameter("senha"));
        objusuario.setTipousuario(Integer.parseInt(request.getParameter("tipousuario")));
             
        String html="";

        // Instanciando a usuario e permitindo que ela seja vista na view
        try 
        {
            UsuarioDAO entidade = new UsuarioDAO();
            entidade.cadastrar(objusuario);
            request.setAttribute("usuarioBean", objusuario);
            html = "Sucesso " + request.getParameter("nome");
        }
        catch(CooperDAOException e)
        {
            request.setAttribute("usuarioBean", null);
            html = "Erro: " + e.getMessage();
        }

        PrintWriter out = response.getWriter(); 
        out.print(html); 
        out.close();
    }

    private void acaoAlterar(HttpServletRequest request, HttpServletResponse response)
                        throws ServletException, IOException, CooperDAOException 
    {
        UsuarioBean objusuario = new UsuarioBean();
        
        objusuario.setId(Integer.parseInt(request.getParameter("id")));
        objusuario.setNome(request.getParameter("nome"));
        objusuario.setSobrenome(request.getParameter("sobrenome"));
        objusuario.setTelefone(Integer.parseInt(request.getParameter("telefone")));
        objusuario.setSkype(request.getParameter("skype"));
        objusuario.setEmail(request.getParameter("email"));
        objusuario.setUsuario(request.getParameter("usuario"));
        objusuario.setSenha(request.getParameter("senha"));
        objusuario.setTipousuario(Integer.parseInt(request.getParameter("tipousuario")));
       
        try
        {
            UsuarioDAO entidade = new UsuarioDAO();
            entidade.alterar(objusuario);
            request.setAttribute("usuarioBean", objusuario);
        }
        catch(CooperDAOException e)
        {
            request.setAttribute("usuarioBean", null);
        }

        RequestDispatcher rd = null;

        // Tem que redirecionar para o view certo
        rd = request.getRequestDispatcher("/manageusuarios.jsp");
        rd.forward(request, response);
    }
    
     private void acaoRemover(HttpServletRequest request, HttpServletResponse response)
                        throws ServletException, IOException, CooperDAOException 
    {
        UsuarioBean objusuario = new UsuarioBean();
        
        objusuario.setId(Integer.parseInt(request.getParameter("id")));
        
        try
        {
            UsuarioDAO entidade = new UsuarioDAO();
            entidade.remover(objusuario);
            request.setAttribute("usuarioBean", objusuario);
        } 
        catch(CooperDAOException e)
        {
            request.setAttribute("usuarioBean", null);
        }

        RequestDispatcher rd = null;

        // Tem que redirecionar para o view certo
        rd = request.getRequestDispatcher("/viewusuarios.jsp");
        rd.forward(request, response);
    }
    
   private void acaoConsultar(HttpServletRequest request, HttpServletResponse response, String nome)
                        throws ServletException, IOException 
    {
        try
        {
            // Não está fazendo paginação
            // Esse é um protótipo
            
            UsuarioDAO usuario = new UsuarioDAO();
            ArrayList novo = usuario.consultar(nome);
            
            int total = usuario.getTotal();
            
            request.setAttribute("total", total);
            request.setAttribute("usuarioBean", novo);
        }
        catch(Exception sqle)
        {
                request.setAttribute("usuarioBean", null);
                request.setAttribute("msg", sqle.getMessage());
        }
        
        RequestDispatcher rd = null;
        
        // Tem que redirecionar para o view certo
        rd = request.getRequestDispatcher("/viewusuarioConsulta.jsp");
        rd.forward(request,response);
    }
}

